home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / graphic / cheetah.zip / FAR.H < prev    next >
C/C++ Source or Header  |  1992-07-31  |  1KB  |  46 lines

  1. #ifndef _FAR_H_
  2. #       define _FAR_H_
  3. /*                 FAR.H
  4.  * Ä»¿ßá¡¿∩ ñ½∩ ¼á¡¿»π½¿α«óá¡¿∩ ß ñá½∞¡¿¼¿ π¬áºáΓѽ∩¼¿.
  5.  * ÅÑαÑ¡«ß¿¼«ßΓ∞: TC
  6.  * $Header: far.h,v 1.2 91/06/02 16:09:13 erdy Exp $
  7.  *                                       Copyright (c)   erdy 1991
  8.  */
  9. #ifdef __TURBOC__
  10. /* æ½¿Φ¬«¼ ¬«¼»¿½∩Γ«α¡«-ºáó¿ß¿¼δÑ óÑΘ¿: */
  11. #ifdef __BORLANDC__
  12. #       define _segment(p) ((unsigned)(void _seg *)(void far *)(p))
  13. #       define _offset(p) ((unsigned)(p))
  14. #else
  15. typedef union {
  16.         void far *farptr;
  17.         struct {
  18.                 unsigned int offset;
  19.                 unsigned int segment;
  20.         } reg;
  21. } farpointer;
  22.  
  23. #       define _segment(p) ((farpointer *)&(p))->reg.segment
  24. #       define _offset(p) ((unsigned)(p))
  25. #endif
  26.  
  27. #       define _farnormal(p) \
  28.         {\
  29.                 _AX = _offset(p);\
  30.                 _AX >>= 4;\
  31.                 _segment(p) += _AX;\
  32.                 _offset(p) &= 0xF;\
  33.         }
  34.  
  35. #       define _ESbased(p) _ES##p
  36. #       define _ESdeclare_ptr(type,name) register type _es *_ES##name
  37. #       define _ESloadseg(p)   _ES = _segment(p)
  38. #       define _ESloadoff(p)   _ESbased(p) = (void _es *)_offset(p)
  39. #else __TURBOC__
  40. #       define _ESbased(p) _ES##p
  41. #       define _ESdeclare_ptr(type,name) type far *_ES##name
  42. #       define _ESloadseg(p)
  43. #       define _ESloadoff(p) _ES##p = p
  44.  
  45. #endif __TURBOC__
  46. #endif _FAR_H_